package statemachine.fsm2;

public interface StateMachineTransitionConfigurer<S, E> {

    /**
     * Gets a configurer for external transition.
     *
     * @return {@link ExternalTransitionConfigurer} for chaining
     * @throws Exception if configuration error happens
     */
    ExternalTransitionConfigurer<S, E> withExternal() throws Exception;

    void apply(ExternalTransitionConfigurer<S, E> transition);

    ExternalTransitionConfigurer<S, E> transition(S event);
}
